// cal.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    id1:"back",
    id2: "clear",
    id3: "negative",
    id4: "+",
    id5: "9",
    id6: "8",
    id7: "7",
    id8: "-",
    id9: "6",
    id10: "5",
    id11: "4",
    id12: "x",
    id13: "3",
    id14: "2",
    id15: "1",
    id16: "÷",
    id17: "0",
    id18: ".",
    id19: "history",
    id20: "=",
    screenData:'0',
    lastIsOperator:false,
    arr:[], //将所有按键不包括＝保存在这个数组里 为原始数组
    optarr:[], //将原始数组连城新的数组 乘除运算  加减运算都在这个数组里 最终这个数组只剩一个数据
    result:0, //每次的运算结果都保存在这里 即optarr数组最终的那一个元素
    complete:false, //false表示一次运算未完成 true表示已经完成一次运算
    resultList:[] //存放所有运算结果的数组
  },
  history:function(){
    wx.navigateTo({
      url: '../history/history',
    })
  },
  clickButton: function(event){
    var id = event.target.id, newArr = this.data.arr,data = this.data.screenData;
    if(this.data.complete == true){ 
      this.setData({ //将上次完成的运算从屏幕上清除，开始新的运算
        screenData: '',
        complete: false
      })
    }
    //clear 将所有数据清空
    if (id == this.data.id2) { 
      this.setData({
        screenData: '0',
        arr:[],
        optarr:[],
        result:0
      });
    }
    //back
    else if (id == this.data.id1){ 
      if (data == '0'){
        return;
      }
      data = data.substring(0, data.length - 1);
      newArr.pop()
      if (data == "" || data=='-'){
        data = 0
      }
      this.setData({
        screenData: data,
        arr: newArr
      });
    }else if(id==this.data.id3){ //+/-
      if(data == 0){
        return;
      }
      var firstWord = data.substring(0,1);
      if (firstWord == "-"){
        data = data.substring(1);
        newArr.shift();
      }else{
        data = "-" + data;
        newArr.unshift('-')
      }
      this.setData({
        screenData: data,
        arr: newArr
      })
      
    }else{
      if (id == this.data.id4 || id == this.data.id8 || id == this.data.id12 || id == this.data.id16 || id == this.data.id20){
        if (this.data.lastIsOperator == true || this.data.screenData == 0){
          return;
        }
      }
      if (id != this.data.id20){
        newArr.push(id);
      }
      var newData;
      if (this.data.screenData == '0') {
        newData = id;
        } 
      else {
        newData = this.data.screenData + id
      }
      this.setData({
        screenData: newData,
        arr: newArr
      })
      //不允许连续按下运算符
      if (id == this.data.id4 || id == this.data.id8 || id == this.data.id12 
        || id == this.data.id16 || id == this.data.id20) {
        this.setData({
          lastIsOperator: true
        })
      }else{
        this.setData({
          lastIsOperator: false
        })
      }
      if (id == this.data.id20) { //如果按键为 ＝ 开始运算
        var length = newArr.length, num = '', optarr = this.data.optarr;
        // console.log(newArr);
        for (var i = 0; i < length; i++) {//连城一个新的数组
          if (newArr[i] == this.data.id4 || newArr[i] == this.data.id8 || newArr[i] == this.data.id12 || newArr[i] == this.data.id16) {
            optarr.push(num);
            optarr.push(newArr[i]);
            num = '';
            console.log(newArr[i])
          } else {
            num += newArr[i];
            if (i == length - 1) {
              optarr.push(num);
            }
          }
        }
        this.data.optarr = optarr;
        console.log(optarr);
        var result = 1;
        for (var i = 1; i < optarr.length; i++) { //结果运算  先乘除
          if (optarr.length == 1) continue;
          if (optarr[i] == this.data.id12) {
            result = (optarr[i - 1] * optarr[i + 1]).toFixed(2);
            optarr.splice(i - 1, 3, result);
            i--;
          }
          if (optarr[i] == this.data.id16) {
            result = (optarr[i - 1] / optarr[i + 1]).toFixed(2);
            optarr.splice(i - 1, 3, result);
            i--;
          }
        }
        console.log(optarr);
        //下面开始做加减
        for (var i = 1; i < optarr.length; i++) { //结果运算  后加减
          if (optarr.length == 1) continue;
          if (optarr[i] == this.data.id4) {
            result = Number(optarr[i - 1]) + Number(optarr[i + 1]);
            optarr.splice(i - 1, 3, result);
            i--;
          }
          if (optarr[i] == this.data.id8) {
            result = optarr[i - 1] - optarr[i + 1];
            optarr.splice(i - 1, 3, result);
            i--;
          }
        }
        this.data.result = optarr[0];
        var result = this.data.screenData + this.data.result;
        // 将每次的运算结果更新放到本地缓存中
        this.data.resultList.unshift(result);
        wx.setStorageSync('resultList', this.data.resultList);
        // console.log('运算结果数组：'+wx.getStorageSync('resultList'))
        this.setData({ //将运算结果显示出来
          screenData: result,
          arr: [],
          optarr: [],
          result: 0,
          complete:true
        })
      }

    }

    console.log(this.data.arr);
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
  
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
  
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
  
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
  
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
  
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  
  }
})